package es.fonso.codigo.paginas;

import java.util.ArrayList;
import java.util.Vector;

import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.select.Elements;

import es.fonso.codigo.Categoria;
import es.fonso.codigo.Paginacion;
import es.fonso.codigo.descargas.DescargaDivxatope;

public class Divxatope extends PaginaGeneral {
	
	//PARAMETROS DE CONFIGURACION DE LA PAGINA:
	
	protected final static String USER_AGENT="Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9) Gecko/2008052906 Firefox/3.0";
	protected final static String MAIN_URL = "http://divxatope.com";
	protected final static String LINK_BUSQUEDA = "http://divxatope.com/main.php?q=";

	private final int MAX_PAGINAS=20;
	
	private final String name="Divx a tope";
	
//	private ArrayList<DescargaDivxatope> listaDescargas;
	
	public Divxatope(String url){
		link = url;
	}
	
	public Divxatope(){
		link=MAIN_URL;
	}

	public void cargarPaginacion() {
		Elements bloquePaginas = doc.getElementsByClass("Paginacion");
		paginacion=new ArrayList<Paginacion>();
		
		//Paginacion en pagina principal
		if (bloquePaginas.size()>0){
			for (Node pagina : bloquePaginas.get(0).childNodes()){			
				try {
					Paginacion p = new Paginacion();
					p.setNumero(Integer.parseInt(pagina.childNode(0).toString()));
					if (pagina.hasAttr("href")){					
						p.setUrl(MAIN_URL + pagina.attr("href"));
						p.setActual(false);					
					}
					else{
						p.setActual(true);
					}
					this.paginacion.add(p);
				} catch (NumberFormatException e) {
					//Si es anterior o siguiente no se hace nada
				}
				
			}
		}	
		//Paginacion en categorias
		
		else{
			Element bloquePaginas2 = doc.getElementsByClass("paginator-items").get(1).parent();
			int i=0;
			for (Node pagina : bloquePaginas2.childNodes()){
				if (i==MAX_PAGINAS) break;
				try{
					Paginacion p = new Paginacion();
					p.setNumero(Integer.parseInt(pagina.childNode(0).toString()));
					p.setUrl(MAIN_URL + pagina.attr("href"));
					p.setActual(false);	
					this.paginacion.add(p);
					i++;
					
				}
				catch (Exception e){
					
				}
			}
		}
	
	}
	
	public void cargarCategorias(){
		Element bloqueCategorias = doc.getElementById("title-categorias").nextElementSibling();
		this.categorias = new Vector<Categoria>();
		Categoria principal = new Categoria(MAIN_URL);
		principal.setNombre("TODAS");
		this.categorias.add(principal);
		for (Node categoria : bloqueCategorias.childNodes()){
			try {
				Categoria c = new Categoria(MAIN_URL + categoria.childNode(0).attr("href"));
				c.setNombre(categoria.childNode(0).childNode(0).toString());
				this.categorias.add(c);
			} catch (Exception e) {

			}
		}
		
	}
	
	public String toString(){
		return name;
	}


	public void obtenerListadoDescargas() {
		Elements resultados = this.getDoc().getElementsByClass("torrent-info");
		
		reiniciaListaDescargas();
		for (Element el : resultados){
			
			//Link
			DescargaDivxatope desc = new DescargaDivxatope();
			desc.setLink(MAIN_URL+el.getElementsByClass("btn-download").get(0).attr("href"));
			// Capturar fecha
			desc.setFecha(el.child(1).html());
			desc.obtenerDatos();					
			getListaDescargas().add(desc);
			
		}
		//Se pone un tryCatch porque en las busquedas la paginacion da error (no hay paginacion
		try {
			this.cargarPaginacion();
		} catch (Exception e) {

		}
		
	}
	
	@Override
	public void setParametrosBusqueda(String parametros){
		this.parametrosBusqueda = parametros.replaceAll(" ", "+");
	}
	
	@Override
	public String getLinkBusqueda(){
		return LINK_BUSQUEDA;
	}

}
